package com.indexingsystem.system.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.indexingsystem.boss.Vo.ProductCategoryVo;
import com.indexingsystem.boss.admin.mapper.ProductCategoryMapper;
import com.indexingsystem.boss.common.PagedResult;
import com.indexingsystem.boss.entity.ProductCategory;
import com.indexingsystem.boss.utils.BeanUtils;
import com.indexingsystem.system.service.IProductCategorysService;

@Service
public class ProductCategorysServiceImpl implements IProductCategorysService {

	@Resource
	private ProductCategoryMapper productCategoryMapper;

	/**
	 * 通过商品分类id删除商品分类.
	 */
	@Override
	public int deleteByPrimaryKey(String productCategoryId) {
		return productCategoryMapper.deleteByPrimaryKey(productCategoryId);
	}

	/**
	 * 新增商品分类.
	 */
	@Override
	public int insertSelective(ProductCategory record) {
		return productCategoryMapper.insertSelective(record);
	}

	/**
	 * 查询商品分类详情.
	 */
	@Override
	public ProductCategory selectByPrimaryKey(String productCategoryId) {
		return productCategoryMapper.selectByPrimaryKey(productCategoryId);
	}

	/**
	 * 获取商品分类总数量.
	 */
	@Override
	public Integer getProductCategoryCount() {
		return productCategoryMapper.getProductCategoryCount();
	}

	/**
	 * 通过父商品分类id查询子商品分类列表总数量.
	 * 
	 * @param productCategoryId
	 * @return
	 */
	@Override
	public Integer getSublevelProductCategorsListSize(String productCategoryId) {
		return productCategoryMapper.getSublevelProductCategorsListSize(productCategoryId);
	}

	/**
	 * 修改商品分类.
	 */
	@Override
	public int updateByPrimaryKeySelective(ProductCategory record) {
		return productCategoryMapper.updateByPrimaryKeySelective(record);
	}

	/**
	 * 分页查询商品分类列表.
	 */
	@Override
	public PagedResult<ProductCategory> selectProductCategoryList(Integer pageNo, Integer pageSize) {
		pageNo = pageNo == null ? 1 : pageNo;
		pageSize = pageSize == null ? 10 : pageSize;
		// startPage是告诉拦截器说我要开始分页了。分页参数是这两个。
		PageHelper.startPage(pageNo, pageSize);
		return BeanUtils.toPagedResult(productCategoryMapper.selectProductCategoryList());
	}
	
	/**
	 * 通过父商品分类id查询子商品分类列表.
	 * 
	 * @param productCategoryId
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@Override
	public PagedResult<ProductCategory> selectSublevelProductCategorsList(String productCategoryId, Integer pageNo,
			Integer pageSize){
		pageNo = pageNo == null ? 1 : pageNo;
		pageSize = pageSize == null ? 10 : pageSize;
		// startPage是告诉拦截器说我要开始分页了。分页参数是这两个。
		PageHelper.startPage(pageNo, pageSize);
		return BeanUtils.toPagedResult(productCategoryMapper.selectSublevelProductCategorsList(productCategoryId));
	}
	
	/**
	 * 获取最大的商品分类排序.
	 */
	@Override
	public String getMaxProductCategory() {
		// return productCategoryMapper.getMaxProductCategory();
		return "";
	}

	/**
	 * 通过商品分类名称查询商品分类.
	 */
	@Override
	public ProductCategory getProductCategoryByProductName(String productName) {
		return productCategoryMapper.getProductCategoryByProductName(productName);
	}

	/**
	 * 批量删除商品分类.
	 */
	@Override
	public int deleteProductCategoryByIdBatch(List<String> productCategoryIdList) {
		return productCategoryMapper.deleteProductCategoryByIdBatch(productCategoryIdList);
	}

	/**
	 * 获取商品分类上/下级树形结构列表.
	 * 
	 * @return
	 */
	@Override
	public List<ProductCategoryVo> getProductCategorsList() {
		return productCategoryMapper.getProductCategorsList();
	}

	@Override
	public String getProductId(String productId) {
		return productCategoryMapper.getProductId(productId);
	}
}